// --------------------------------------------------------------------------------------------------------------------- 
// <copyright file="ITfsEvent.cs" company="Scrum for Team System">
//   None
// </copyright>
// <summary>
//   Defines the ITSEvent type.
// </summary>
// ---------------------------------------------------------------------------------------------------------------------
namespace ScrumForTeamSystem.EventService.Infrastructure.Interfaces
{
    #region

    using System;

    using ScrumForTeamSystem.EventService.Infrastructure.Enums;

    #endregion

    /// <summary>
    /// Defines the event interface
    /// </summary>
    public interface ITfsEvent
    {
        /// <summary>
        /// Occurs when [state changed] event raised.
        /// </summary>
        event EventHandler<TfsEventArgs> StateChanged;

        /// <summary>
        /// Gets ServerIdentity.
        /// </summary>
        /// <value>
        /// The server identity.
        /// </value>
        TFSIdentity ServerIdentity
        {
            get;
        }

        /// <summary>
        /// Gets EventSource.
        /// </summary>
        /// <value>
        /// The event source.
        /// </value>
        object EventSource
        {
            get;
        }

        /// <summary>
        /// Gets EventSourceType.
        /// </summary>
        /// <value>
        /// The event source type.
        /// </value>
        Type EventSourceType
        {
            get;
        }

        /// <summary>
        /// Gets or sets State.
        /// </summary>
        /// <value>
        /// The state.
        /// </value>
        TfsEventState State
        {
            get;
            set;
        }
    }
}